feat!: achieve full compare-types parity for pipelines / fix loads of other types drift#9088
Conversation
This comment was marked as low quality.
This comment was marked as low quality.
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request achieves full type and API parity for the Highlights
Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request aligns several React Native Firebase modular APIs and types with the firebase-js-sdk to achieve better type parity and synchronous signature alignment. Key updates include converting logEvent, initializeAppCheck, and initializeFirestore to synchronous returns, adding Firestore pipeline support for search and define stages, and updating firebase-tools to version 15.22.4. Feedback on these changes highlights critical runtime bugs in both the Java and Swift pipeline node builders where coerceDocumentPathValue incorrectly falls back to the original value instead of the unwrapped resolved variable. Additionally, a type signature error was identified in StorageObserver that incorrectly restricts the nullability of the error property.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #9088 +/- ##
============================================
+ Coverage 57.95% 58.65% +0.70%
- Complexity 1563 1616 +53
============================================
Files 503 503
Lines 38574 39178 +604
Branches 5719 5807 +88
============================================
+ Hits 22353 22976 +623
+ Misses 14845 14800 -45
- Partials 1376 1402 +26
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
ea12229 to
3af684f
Compare
This comment was marked as low quality.
This comment was marked as low quality.
3af684f to
991a4a9
Compare
This comment was marked as low quality.
This comment was marked as low quality.
1 similar comment
This comment was marked as low quality.
This comment was marked as low quality.
e430ebb to
b0084e3
Compare
This comment was marked as low quality.
This comment was marked as low quality.
1 similar comment
This comment was marked as low quality.
This comment was marked as low quality.
4da576e to
a860457
Compare
- Firestore: align onSnapshotsInSync observer next and error callback types. - Firestore pipelines: align StageOptions, TimeGranularity, and isType declarations. - Storage: rename upload return types to UploadResult and UploadTask. - App Check: export AppCheckTokenListener type alias. - Functions: add compare-types registry and align FunctionsError exports. - App: make NativeFirebaseError structurally assignable to FirebaseError. - Remote Config and Storage: use FirebaseError in modular error callbacks.
…ures BREAKING CHANGE: logEvent, initializeAppCheck, and initializeFirestore return synchronously; remove await and .then() chains on these APIs. - Analytics: align logEvent return type with firebase-js-sdk sync void. - App Check: align initializeAppCheck with sync AppCheck return. - Firestore: align initializeFirestore with sync Firestore return. - Firestore: export aggregateFieldEqual for aggregate query parity. - Remote Config: accept RemoteConfigOptions in getRemoteConfig. - Remote Config: document native FetchStatus literals as intentional drift. - Docs: add firebase-js-sdk API parity improvements to v26 migration guide.
Align constant() with firebase-js-sdk preferIntegers overload and integerLiteral serialization at iOS/Android parse time; compare-types firestore-pipelines differentShape cleared; preferIntegers Pipeline e2e on macOS/iOS/Android.
Canonicalize acceptable exceptions (intractable-limitation bar and user-accepted deferral) in change authoring; reference from coverage, compare-types, and package workflows.
ea33a45 to
2cf18ab
Compare
Summary
Compare-types and firebase-js-sdk modular parity across Firestore (including pipelines), Storage, Analytics, App Check, Remote Config, Functions, and cross-cutting callback signatures.
search,define,documentMatches,score,geoDistance, andparentwith native iOS/Android lowering; addconstant(number, { preferIntegers }); remove unused RN-onlyTypeexport —firestore-pipelinescompare-types config has no documented diffslogEvent,initializeAppCheck,initializeFirestore,getRemoteConfigoptions, andaggregateFieldEqualwith firebase-js-sdk sync/void shapes; clear related compare-types rows for Firestore, Storage, App Check, Functions, and Remote ConfigUploadTask.pause(),resume(), andcancel()return synchronousboolean;setTaskStatusTurboModule spec and native bridge updated accordinglyTransactionOptions;runTransaction(firestore, fn, options?)accepts{ maxAttempts }throughtransactionBeginto nativerunTransactionWithOptions/TransactionOptions.Builder; validate explicitmaxAttempts≥ 1 (Max attempts must be at least 1); omitted options use the native default of 5 retriesaggregateQuerySnapshotEqual()alongsideaggregateFieldEqualmaximum/minimumremain unexported until iOS Firebase Firestore 12.15.0 exposes matching factories (Android 34.15.0 already has them)verify-firestore-indexes.sh; add compare-types parity work queue (OKF); updatedocs/migrating-to-v26.mdx, sdk-compatibility tables, and compare-types config reasonsRelated PRs
Test plan
yarn compare:typesyarn lerna:prepare,yarn tsc:compile,yarn tsc:compile:consumeryarn lint:js,yarn lint:markdownStorageTask,runTransaction,aggregateEqual, native module contractsPipeline.e2e.js,Transaction.e2e.js,StorageTask.e2e.json macOS, iOS, and Android (iOS upload mid-cancel skipped — firebase-ios-sdk#16353)